package com.yixun.qfbao.response.premises.detail.util;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;

/**
 * @author zilong.liu
 * @date 2020-10-26
 *
 * desc:
 * 	坐标转换工具类
 */
public class CoordinateVoncertUtil {
	
	/**
	 * 
	 * 方法改造时需注意，只有成功时返回两个元素
	 * 根据输入的坐标以及坐标类型转换成其他的
	 * type 说明：
	 * 	1、腾讯转百度
	 * @return
	 * 	 转换异常时，只有一个元素，说明转换失败原因。
	 * 	 转换正常时，有两个元素， 顺序为 latitude， longtitude
	 * 
	 */
	public static List<String> coordinateVoncertUtil(int type, String latitude, String longtitude) {
		List<String> coordinate = new ArrayList<>();
		if (StringUtils.isEmpty(latitude)) {
			coordinate.add("latitude 不能为空");
			return coordinate;
		}
		if (StringUtils.isEmpty(longtitude)) {
			coordinate.add("longtitude 不能为空");
			return coordinate;
		}
		switch (type) {
		case 1:
			baiduToTencent(latitude, longtitude, coordinate);
			break;

		default:
			break;
		}
		return coordinate;
	}
	
	/**
	 * 
	 * @param latitude 纬度
	 * @param longtitude 经度
	 */
	private static void baiduToTencent (String latitude, String longtitude, List<String> coordinate) {
		float x_pi = 3.14159265358979324f;
	    double x = Double.parseDouble(longtitude) - 0.0065;
	    double y = Double.parseDouble(latitude) - 0.006;
	    double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
	    double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
	    coordinate.add(String.valueOf(z * Math.sin(theta)));
	    coordinate.add(String.valueOf(z * Math.cos(theta)));
	}
	
	public static void main(String[] args) {
		CoordinateVoncertUtil.coordinateVoncertUtil(1, "30.892127", "121.929342");
	}
}
